package com.ruoyi.biz.letter.domain;

import java.util.Date;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.biz.letter.read.*;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 省住建厅官网厅长信箱对象 biz_leader_mailbox
 *
 * @author Fei.Cong
 * @date 2024-07-11
 */
@TableName(value = "biz_leader_mailbox")
public class BizLeaderMailbox extends CategoryBase {
    private static final long serialVersionUID = 1L;

    /**
     * id
     */
    private Long id;

    /**
     * 信件编号
     */
    @ExcelProperty("信件编号")
    private String letterNumber;

    /**
     * 来信人姓名
     */
    @ExcelProperty("来信人姓名")
    private String letterUsername;

    /**
     * 来信人电话
     */
    @ExcelProperty("来信人电话")
    private String letterPhone;

    /**
     * 查询码
     */
    @ExcelProperty("查询码")
    private String queryCode;

    /**
     * 来信目的,1-投诉,2-咨询,3-问题反映,4-求助,5-建议
     */
    @ExcelProperty(value = "来信目的", converter = PurposeConverter.class)
    private String letterPurpose;

    /**
     * 信件标题
     */
    @ExcelProperty("信件标题")
    private String letterTitle;

    /**
     * 信件内容
     */
    @ExcelProperty("信件内容")
    private String letterContent;

    /**
     * 回复内容
     */
    @ExcelProperty("回复内容")
    private String replyContent;

    /**
     * 来信时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ExcelProperty("来信时间")
    private Date letterTime;

    /**
     * 信件状态,1-已办结,2-未办结
     */
    @ExcelProperty(value = "信件状态", converter = FinishedConverter.class)
    private String isFinish;

    /**
     * 是否公开
     */
    @ExcelProperty(value = "是否公开", converter = YesOrNoConverter.class)
    private String isPublish;

    /**
     * 是否超时
     */
    @ExcelProperty(value = "是否超时", converter = YesOrNoConverter.class)
    private String isTimeout;

    /**
     * 是否废弃
     */
    @ExcelProperty(value = "是否废弃", converter = YesOrNoConverter.class)
    private String isAbandon;

    /**
     * 是否发布
     */
    @ExcelProperty(value = "是否发布", converter = YesOrNoConverter.class)
    private String isPublic;

    /**
     * 超期时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ExcelProperty("超期时间")
    private Date delayDate;

    /**
     * 回复时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ExcelProperty("回复时间")
    private Date replyDate;

    /**
     * 来信人ip
     */
    @ExcelProperty("来信人ip")
    private String letterIp;

    /**
     * 部门id
     */
    private Long deptId;

    /**
     * 删除标志（0代表存在 2代表删除）
     */
    private String delFlag;

    /**
     * 受理部门
     */
    @TableField(exist = false)
    @ExcelProperty(value = "受理部门", converter = AcceptDeptConverter.class)
    private String handleDept;

    public void setId(Long id) {
        this.id = id;
    }

    public Long getId() {
        return id;
    }

    public void setLetterNumber(String letterNumber) {
        this.letterNumber = letterNumber;
    }

    public String getLetterNumber() {
        return letterNumber;
    }

    public void setLetterUsername(String letterUsername) {
        this.letterUsername = letterUsername;
    }

    public String getLetterUsername() {
        return letterUsername;
    }

    public void setLetterPhone(String letterPhone) {
        this.letterPhone = letterPhone;
    }

    public String getLetterPhone() {
        return letterPhone;
    }

    public void setQueryCode(String queryCode) {
        this.queryCode = queryCode;
    }

    public String getQueryCode() {
        return queryCode;
    }

    public void setLetterPurpose(String letterPurpose) {
        this.letterPurpose = letterPurpose;
    }

    public String getLetterPurpose() {
        return letterPurpose;
    }

    public void setLetterTitle(String letterTitle) {
        this.letterTitle = letterTitle;
    }

    public String getLetterTitle() {
        return letterTitle;
    }

    public void setLetterContent(String letterContent) {
        this.letterContent = letterContent;
    }

    public String getLetterContent() {
        return letterContent;
    }

    public void setReplyContent(String replyContent) {
        this.replyContent = replyContent;
    }

    public String getReplyContent() {
        return replyContent;
    }

    public Date getLetterTime() {
        return letterTime;
    }

    public void setLetterTime(Date letterTime) {
        this.letterTime = letterTime;
    }

    public void setDelFlag(String delFlag) {
        this.delFlag = delFlag;
    }

    public String getDelFlag() {
        return delFlag;
    }

    public String getIsFinish() {
        return isFinish;
    }

    public void setIsFinish(String isFinish) {
        this.isFinish = isFinish;
    }

    public void setIsPublish(String isPublish) {
        this.isPublish = isPublish;
    }

    public String getIsPublish() {
        return isPublish;
    }

    public void setIsTimeout(String isTimeout) {
        this.isTimeout = isTimeout;
    }

    public String getIsTimeout() {
        return isTimeout;
    }

    public void setIsAbandon(String isAbandon) {
        this.isAbandon = isAbandon;
    }

    public String getIsAbandon() {
        return isAbandon;
    }

    public void setIsPublic(String isPublic) {
        this.isPublic = isPublic;
    }

    public String getIsPublic() {
        return isPublic;
    }

    public Date getDelayDate() {
        return delayDate;
    }

    public void setDelayDate(Date delayDate) {
        this.delayDate = delayDate;
    }

    public Date getReplyDate() {
        return replyDate;
    }

    public void setReplyDate(Date replyDate) {
        this.replyDate = replyDate;
    }

    public void setLetterIp(String letterIp) {
        this.letterIp = letterIp;
    }

    public String getLetterIp() {
        return letterIp;
    }

    public Long getDeptId() {
        return deptId;
    }

    public void setDeptId(Long deptId) {
        this.deptId = deptId;
    }

    public String getHandleDept() {
        return handleDept;
    }

    public void setHandleDept(String handleDept) {
        this.handleDept = handleDept;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("letterNumber", getLetterNumber())
                .append("letterUsername", getLetterUsername())
                .append("letterPhone", getLetterPhone())
                .append("queryCode", getQueryCode())
                .append("letterPurpose", getLetterPurpose())
                .append("acceptDept", getAcceptDept())
                .append("letterTitle", getLetterTitle())
                .append("letterContent", getLetterContent())
                .append("replyContent", getReplyContent())
                .append("letterTime", getLetterTime())
                .append("isFinish", getIsFinish())
                .append("isPublish", getIsPublish())
                .append("isTimeout", getIsTimeout())
                .append("isAbandon", getIsAbandon())
                .append("isPublic", getIsPublic())
                .append("delayDate", getDelayDate())
                .append("replyDate", getReplyDate())
                .append("letterIp", getLetterIp())
                .append("deptId", getDeptId())
                .append("delFlag", getDelFlag())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .append("remark", getRemark())
                .toString();
    }
}
